// add.js
import { getVolunteerDetail, editVolunteer, addVolunteer } from '../../../utils/volunteer';
Page({
  data: {
    // 表单数据
    formData: {

    },
    // 选中的值
    gender: '未知',
    birthDate: '',

    // 编辑模式
    isEditMode: false,
    volunteerId: '',

    // 表单验证错误
    errors: {}
  },

  onLoad: function (options) {
    //如果是编辑模式
    if (options && options.id) {
      this.loadVolunteerData(options.id);
      this.setData({
        isEditMode: true,
        volunteerId: options.id
      });
    }
    // 获取状态栏高度
    const systemInfo = wx.getSystemInfoSync();
    this.setData({
      statusBarHeight: systemInfo.statusBarHeight
    });
  },

  // 加载志愿者数据（编辑模式）
  loadVolunteerData: function (id) {
    wx.showLoading({
      title: '加载中...',
    });

    // 这里应该是从API获取数据，这里模拟一些数据
    setTimeout(() => {
      getVolunteerDetail(id).then(res => {
        const volunteerData = {
          name: res.name,
          phone: res.phone,
          idNumber: res.identificationNumber,
          homeAddress: res.address,
          skills: res.skill,
          email: res.standby,
          gender: res.gender,
          birthDate: res.birthDate,
          remarks: res.remarks
        };
        this.setData({
          formData: volunteerData
        });
      });

      // // 自动解析身份证号码
      // const idNumber = volunteerData.idNumber;
      // let gender = '未知';
      // let birthDate = '';

      // if (idNumber && idNumber.length === 18) {
      //   try {
      //     // 提取身份证信息
      //     const year = idNumber.substring(6, 10);
      //     const month = idNumber.substring(10, 12);
      //     birthDate = `${year}-${month}`;

      //     // 提取性别信息：奇数为男，偶数为女
      //     const genderCode = parseInt(idNumber.charAt(16));
      //     gender = genderCode % 2 === 1 ? '男' : '女';
      //   } catch (error) {
      //     console.error('身份证解析错误:', error);
      //   }
      // }

      // this.setData({
      //   formData: volunteerData,
      //   gender: gender,
      //   birthDate: birthDate,
      // });

      wx.hideLoading();
    }, 800);
  },

  // 性别选择改变
  onGenderChange: function (e) {
    this.setData({
      gender: e.detail.value
    });
  },

  // 出生日期选择改变
  onBirthDateChange: function (e) {
    this.setData({
      birthDate: e.detail.value
    });
  },

  // 身份证号输入校验并自动填充性别和出生日期
  validateIdNumber: function (e) {
    const idNumber = e.detail.value;
    if (idNumber.length !== 18) return;
    try {
      // 简单的身份证验证
      const pattern = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
      if (!pattern.test(idNumber)) {
        this.showToast('身份证号码格式不正确');
        return;
      }

      // 提取身份证信息
      const year = idNumber.substring(6, 10);
      const month = idNumber.substring(10, 12);
      const birthDate = `${year}-${month}`;

      // 提取性别信息：奇数为男，偶数为女
      const genderCode = parseInt(idNumber.charAt(16));
      const gender = genderCode % 2 === 1 ? '男' : '女';

      this.setData({
        birthDate: birthDate,
        gender: gender
      });

      // 震动反馈
      wx.vibrateShort({
        type: 'light'
      });
    } catch (error) {
      console.error('身份证解析错误:', error);
      this.showToast('身份证解析错误');
    }
  },

  // 表单验证
  validateForm: function (formData) {
    let errors = {};

    // 必填项验证
    if (!formData.name || formData.name.trim() === '') {
      errors.name = '请输入姓名';
    }

    if (!formData.phone || formData.phone.trim() === '') {
      errors.phone = '请输入联系方式';
    } else if (!/^1[3-9]\d{9}$/.test(formData.phone)) {
      errors.phone = '手机号格式不正确';
    }

    // 身份证号码验证
    if (formData.idNumber && formData.idNumber.trim() !== '') {
      const pattern = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
      if (!pattern.test(formData.idNumber)) {
        errors.idNumber = '身份证号码格式不正确';
      }
    }
    this.setData({
      errors
    });
    return Object.keys(errors).length === 0;
  },

  // 提交表单
  submitForm: function (e) {
    const formData = e.detail.value;

    // 添加选择器的值
    formData.gender = this.data.gender;
    formData.birthDate = this.data.birthDate;



    // 添加编辑模式的ID
    if (this.data.isEditMode) {
      formData.id = this.data.volunteerId;
    }

    console.log('表单数据:', formData);

    // 表单验证
    if (!this.validateForm(formData)) {
      // 显示第一个错误
      const firstError = Object.values(this.data.errors)[0];
      this.showToast(firstError);
      return;
    }

    // 在实际项目中，这里应该将数据提交到服务器
    // 这里只是模拟提交成功
    wx.showLoading({
      title: '提交中...',
    });

    setTimeout(() => {
      //提交数据
      if (this.data.isEditMode) {
        editVolunteer(formData).then(res => {
          // console.log(res);
          if (res.code === 200) {
            wx.hideLoading();
            wx.showToast({
              title: this.data.isEditMode ? '修改成功' : '添加成功',
              icon: 'success',
              duration: 2000,
            });
          } else {
            wx.hideLoading();
            wx.showToast({
              title: '提交失败',
              icon: 'none',
              duration: 2000
            });
          }
        });
      } else {
        addVolunteer(formData).then(res => {
          // console.log(res);
          if (res.code === 200) {
            wx.hideLoading();
            wx.showToast({
              title: '添加成功',
              icon: 'success',
              duration: 2000,
            });
          } else {
            wx.hideLoading();
            wx.showToast({
              title: '提交失败',
              icon: 'none',
              duration: 2000
            });
          }
        });
      }
    }, 1500);
  },

  // 显示提示信息
  showToast: function (message) {
    wx.showToast({
      title: message,
      icon: 'none',
      duration: 2000
    });
  },

  // 返回上一页
  goBack: function () {
    // 如果表单已经有内容，提示用户是否确认放弃编辑
    if (this.data.photoPath ||
      this.data.formData.name ||
      this.data.formData.phone) {
      wx.showModal({
        title: '提示',
        content: '确定放弃编辑并返回吗？',
        success: (res) => {
          if (res.confirm) {
            wx.navigateBack();
          }
        }
      });
    } else {
      wx.navigateBack();
    }
  }
});